#include "DebugDraw.h"
#ifdef __cplusplus
extern "C" {
#endif
unsigned int nav_duDebugDraw_areaToCol(duDebugDraw * c_this,unsigned int area){
	unsigned int c_arg_area=area;
	unsigned int c_out = c_this->areaToCol(c_arg_area);
	unsigned int wrap_out  = (c_out);
	return wrap_out;
}

void nav_duDebugDraw_begin(duDebugDraw * c_this,duDebugDrawPrimitives prim,float size){
	duDebugDrawPrimitives c_arg_prim=prim;
	float c_arg_size=size;
	c_this->begin(c_arg_prim,c_arg_size);
}

void nav_duDebugDraw_Delete(duDebugDraw * c_this){
	if(c_this==0){
	    return;
	}
	delete c_this;
}

void nav_duDebugDraw_depthMask(duDebugDraw * c_this,bool state){
	bool c_arg_state=state;
	c_this->depthMask(c_arg_state);
}

void nav_duDebugDraw_end(duDebugDraw * c_this){
	c_this->end();
}

void nav_duDebugDraw_texture(duDebugDraw * c_this,bool state){
	bool c_arg_state=state;
	c_this->texture(c_arg_state);
}

void nav_duDebugDraw_vertex(duDebugDraw * c_this,float const * pos,unsigned int color){
	float const * c_arg_pos=(float const *)(void*)(pos);
	unsigned int c_arg_color=color;
	c_this->vertex(c_arg_pos,c_arg_color);
}

void nav_duDebugDraw_vertex11(duDebugDraw * c_this,float const x,float const y,float const z,unsigned int color){
	float const c_arg_x=x;
	float const c_arg_y=y;
	float const c_arg_z=z;
	unsigned int c_arg_color=color;
	c_this->vertex(c_arg_x,c_arg_y,c_arg_z,c_arg_color);
}

void nav_duDebugDraw_vertex12(duDebugDraw * c_this,float const * pos,unsigned int color,float const * uv){
	float const * c_arg_pos=(float const *)(void*)(pos);
	unsigned int c_arg_color=color;
	float const * c_arg_uv=(float const *)(void*)(uv);
	c_this->vertex(c_arg_pos,c_arg_color,c_arg_uv);
}

void nav_duDebugDraw_vertex13(duDebugDraw * c_this,float const x,float const y,float const z,unsigned int color,float const u,float const v){
	float const c_arg_x=x;
	float const c_arg_y=y;
	float const c_arg_z=z;
	unsigned int c_arg_color=color;
	float const c_arg_u=u;
	float const c_arg_v=v;
	c_this->vertex(c_arg_x,c_arg_y,c_arg_z,c_arg_color,c_arg_u,c_arg_v);
}

void nav_duDisplayList_begin(duDisplayList * c_this,duDebugDrawPrimitives prim,float size){
	duDebugDrawPrimitives c_arg_prim=prim;
	float c_arg_size=size;
	c_this->begin(c_arg_prim,c_arg_size);
}

void nav_duDisplayList_clear(duDisplayList * c_this){
	c_this->clear();
}

void nav_duDisplayList_Delete(duDisplayList * c_this){
	if(c_this==0){
	    return;
	}
	delete c_this;
}

void nav_duDisplayList_depthMask(duDisplayList * c_this,bool state){
	bool c_arg_state=state;
	c_this->depthMask(c_arg_state);
}

void nav_duDisplayList_draw(duDisplayList * c_this,duDebugDraw * dd){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	c_this->draw(c_arg_dd);
}

void nav_duDisplayList_end(duDisplayList * c_this){
	c_this->end();
}

void nav_duDisplayList_vertex(duDisplayList * c_this,float const x,float const y,float const z,unsigned int color){
	float const c_arg_x=x;
	float const c_arg_y=y;
	float const c_arg_z=z;
	unsigned int c_arg_color=color;
	c_this->vertex(c_arg_x,c_arg_y,c_arg_z,c_arg_color);
}

void nav_duDisplayList_vertex11(duDisplayList * c_this,float const * pos,unsigned int color){
	float const * c_arg_pos=(float const *)(void*)(pos);
	unsigned int c_arg_color=color;
	c_this->vertex(c_arg_pos,c_arg_color);
}

void nav_duAppendArc(duDebugDraw * dd,float const x0,float const y0,float const z0,float const x1,float const y1,float const z1,float const h,float const as0,float const as1,unsigned int col){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float const c_arg_x0=x0;
	float const c_arg_y0=y0;
	float const c_arg_z0=z0;
	float const c_arg_x1=x1;
	float const c_arg_y1=y1;
	float const c_arg_z1=z1;
	float const c_arg_h=h;
	float const c_arg_as0=as0;
	float const c_arg_as1=as1;
	unsigned int c_arg_col=col;
	duAppendArc(c_arg_dd,c_arg_x0,c_arg_y0,c_arg_z0,c_arg_x1,c_arg_y1,c_arg_z1,c_arg_h,c_arg_as0,c_arg_as1,c_arg_col);
}

void nav_duAppendArrow(duDebugDraw * dd,float const x0,float const y0,float const z0,float const x1,float const y1,float const z1,float const as0,float const as1,unsigned int col){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float const c_arg_x0=x0;
	float const c_arg_y0=y0;
	float const c_arg_z0=z0;
	float const c_arg_x1=x1;
	float const c_arg_y1=y1;
	float const c_arg_z1=z1;
	float const c_arg_as0=as0;
	float const c_arg_as1=as1;
	unsigned int c_arg_col=col;
	duAppendArrow(c_arg_dd,c_arg_x0,c_arg_y0,c_arg_z0,c_arg_x1,c_arg_y1,c_arg_z1,c_arg_as0,c_arg_as1,c_arg_col);
}

void nav_duAppendBox(duDebugDraw * dd,float minx,float miny,float minz,float maxx,float maxy,float maxz,unsigned int const * fcol){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float c_arg_minx=minx;
	float c_arg_miny=miny;
	float c_arg_minz=minz;
	float c_arg_maxx=maxx;
	float c_arg_maxy=maxy;
	float c_arg_maxz=maxz;
	unsigned int const * c_arg_fcol=(unsigned int const *)(void*)(fcol);
	duAppendBox(c_arg_dd,c_arg_minx,c_arg_miny,c_arg_minz,c_arg_maxx,c_arg_maxy,c_arg_maxz,c_arg_fcol);
}

void nav_duAppendBoxPoints(duDebugDraw * dd,float minx,float miny,float minz,float maxx,float maxy,float maxz,unsigned int col){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float c_arg_minx=minx;
	float c_arg_miny=miny;
	float c_arg_minz=minz;
	float c_arg_maxx=maxx;
	float c_arg_maxy=maxy;
	float c_arg_maxz=maxz;
	unsigned int c_arg_col=col;
	duAppendBoxPoints(c_arg_dd,c_arg_minx,c_arg_miny,c_arg_minz,c_arg_maxx,c_arg_maxy,c_arg_maxz,c_arg_col);
}

void nav_duAppendBoxWire(duDebugDraw * dd,float minx,float miny,float minz,float maxx,float maxy,float maxz,unsigned int col){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float c_arg_minx=minx;
	float c_arg_miny=miny;
	float c_arg_minz=minz;
	float c_arg_maxx=maxx;
	float c_arg_maxy=maxy;
	float c_arg_maxz=maxz;
	unsigned int c_arg_col=col;
	duAppendBoxWire(c_arg_dd,c_arg_minx,c_arg_miny,c_arg_minz,c_arg_maxx,c_arg_maxy,c_arg_maxz,c_arg_col);
}

void nav_duAppendCircle(duDebugDraw * dd,float const x,float const y,float const z,float const r,unsigned int col){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float const c_arg_x=x;
	float const c_arg_y=y;
	float const c_arg_z=z;
	float const c_arg_r=r;
	unsigned int c_arg_col=col;
	duAppendCircle(c_arg_dd,c_arg_x,c_arg_y,c_arg_z,c_arg_r,c_arg_col);
}

void nav_duAppendCross(duDebugDraw * dd,float const x,float const y,float const z,float const size,unsigned int col){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float const c_arg_x=x;
	float const c_arg_y=y;
	float const c_arg_z=z;
	float const c_arg_size=size;
	unsigned int c_arg_col=col;
	duAppendCross(c_arg_dd,c_arg_x,c_arg_y,c_arg_z,c_arg_size,c_arg_col);
}

void nav_duAppendCylinder(duDebugDraw * dd,float minx,float miny,float minz,float maxx,float maxy,float maxz,unsigned int col){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float c_arg_minx=minx;
	float c_arg_miny=miny;
	float c_arg_minz=minz;
	float c_arg_maxx=maxx;
	float c_arg_maxy=maxy;
	float c_arg_maxz=maxz;
	unsigned int c_arg_col=col;
	duAppendCylinder(c_arg_dd,c_arg_minx,c_arg_miny,c_arg_minz,c_arg_maxx,c_arg_maxy,c_arg_maxz,c_arg_col);
}

void nav_duAppendCylinderWire(duDebugDraw * dd,float minx,float miny,float minz,float maxx,float maxy,float maxz,unsigned int col){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float c_arg_minx=minx;
	float c_arg_miny=miny;
	float c_arg_minz=minz;
	float c_arg_maxx=maxx;
	float c_arg_maxy=maxy;
	float c_arg_maxz=maxz;
	unsigned int c_arg_col=col;
	duAppendCylinderWire(c_arg_dd,c_arg_minx,c_arg_miny,c_arg_minz,c_arg_maxx,c_arg_maxy,c_arg_maxz,c_arg_col);
}

void nav_duCalcBoxColors(unsigned int * colors,unsigned int colTop,unsigned int colSide){
	unsigned int * c_arg_colors=(unsigned int *)(void*)(colors);
	unsigned int c_arg_colTop=colTop;
	unsigned int c_arg_colSide=colSide;
	duCalcBoxColors(c_arg_colors,c_arg_colTop,c_arg_colSide);
}

unsigned int nav_duDarkenCol(unsigned int col){
	unsigned int c_arg_col=col;
	unsigned int c_out = duDarkenCol(c_arg_col);
	unsigned int wrap_out  = (c_out);
	return wrap_out;
}

void nav_duDebugDrawArc(duDebugDraw * dd,float const x0,float const y0,float const z0,float const x1,float const y1,float const z1,float const h,float const as0,float const as1,unsigned int col,float const lineWidth){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float const c_arg_x0=x0;
	float const c_arg_y0=y0;
	float const c_arg_z0=z0;
	float const c_arg_x1=x1;
	float const c_arg_y1=y1;
	float const c_arg_z1=z1;
	float const c_arg_h=h;
	float const c_arg_as0=as0;
	float const c_arg_as1=as1;
	unsigned int c_arg_col=col;
	float const c_arg_lineWidth=lineWidth;
	duDebugDrawArc(c_arg_dd,c_arg_x0,c_arg_y0,c_arg_z0,c_arg_x1,c_arg_y1,c_arg_z1,c_arg_h,c_arg_as0,c_arg_as1,c_arg_col,c_arg_lineWidth);
}

void nav_duDebugDrawArrow(duDebugDraw * dd,float const x0,float const y0,float const z0,float const x1,float const y1,float const z1,float const as0,float const as1,unsigned int col,float const lineWidth){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float const c_arg_x0=x0;
	float const c_arg_y0=y0;
	float const c_arg_z0=z0;
	float const c_arg_x1=x1;
	float const c_arg_y1=y1;
	float const c_arg_z1=z1;
	float const c_arg_as0=as0;
	float const c_arg_as1=as1;
	unsigned int c_arg_col=col;
	float const c_arg_lineWidth=lineWidth;
	duDebugDrawArrow(c_arg_dd,c_arg_x0,c_arg_y0,c_arg_z0,c_arg_x1,c_arg_y1,c_arg_z1,c_arg_as0,c_arg_as1,c_arg_col,c_arg_lineWidth);
}

void nav_duDebugDrawBox(duDebugDraw * dd,float minx,float miny,float minz,float maxx,float maxy,float maxz,unsigned int const * fcol){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float c_arg_minx=minx;
	float c_arg_miny=miny;
	float c_arg_minz=minz;
	float c_arg_maxx=maxx;
	float c_arg_maxy=maxy;
	float c_arg_maxz=maxz;
	unsigned int const * c_arg_fcol=(unsigned int const *)(void*)(fcol);
	duDebugDrawBox(c_arg_dd,c_arg_minx,c_arg_miny,c_arg_minz,c_arg_maxx,c_arg_maxy,c_arg_maxz,c_arg_fcol);
}

void nav_duDebugDrawBoxWire(duDebugDraw * dd,float minx,float miny,float minz,float maxx,float maxy,float maxz,unsigned int col,float const lineWidth){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float c_arg_minx=minx;
	float c_arg_miny=miny;
	float c_arg_minz=minz;
	float c_arg_maxx=maxx;
	float c_arg_maxy=maxy;
	float c_arg_maxz=maxz;
	unsigned int c_arg_col=col;
	float const c_arg_lineWidth=lineWidth;
	duDebugDrawBoxWire(c_arg_dd,c_arg_minx,c_arg_miny,c_arg_minz,c_arg_maxx,c_arg_maxy,c_arg_maxz,c_arg_col,c_arg_lineWidth);
}

void nav_duDebugDrawCircle(duDebugDraw * dd,float const x,float const y,float const z,float const r,unsigned int col,float const lineWidth){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float const c_arg_x=x;
	float const c_arg_y=y;
	float const c_arg_z=z;
	float const c_arg_r=r;
	unsigned int c_arg_col=col;
	float const c_arg_lineWidth=lineWidth;
	duDebugDrawCircle(c_arg_dd,c_arg_x,c_arg_y,c_arg_z,c_arg_r,c_arg_col,c_arg_lineWidth);
}

void nav_duDebugDrawCross(duDebugDraw * dd,float const x,float const y,float const z,float const size,unsigned int col,float const lineWidth){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float const c_arg_x=x;
	float const c_arg_y=y;
	float const c_arg_z=z;
	float const c_arg_size=size;
	unsigned int c_arg_col=col;
	float const c_arg_lineWidth=lineWidth;
	duDebugDrawCross(c_arg_dd,c_arg_x,c_arg_y,c_arg_z,c_arg_size,c_arg_col,c_arg_lineWidth);
}

void nav_duDebugDrawCylinder(duDebugDraw * dd,float minx,float miny,float minz,float maxx,float maxy,float maxz,unsigned int col){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float c_arg_minx=minx;
	float c_arg_miny=miny;
	float c_arg_minz=minz;
	float c_arg_maxx=maxx;
	float c_arg_maxy=maxy;
	float c_arg_maxz=maxz;
	unsigned int c_arg_col=col;
	duDebugDrawCylinder(c_arg_dd,c_arg_minx,c_arg_miny,c_arg_minz,c_arg_maxx,c_arg_maxy,c_arg_maxz,c_arg_col);
}

void nav_duDebugDrawCylinderWire(duDebugDraw * dd,float minx,float miny,float minz,float maxx,float maxy,float maxz,unsigned int col,float const lineWidth){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float c_arg_minx=minx;
	float c_arg_miny=miny;
	float c_arg_minz=minz;
	float c_arg_maxx=maxx;
	float c_arg_maxy=maxy;
	float c_arg_maxz=maxz;
	unsigned int c_arg_col=col;
	float const c_arg_lineWidth=lineWidth;
	duDebugDrawCylinderWire(c_arg_dd,c_arg_minx,c_arg_miny,c_arg_minz,c_arg_maxx,c_arg_maxy,c_arg_maxz,c_arg_col,c_arg_lineWidth);
}

void nav_duDebugDrawGridXZ(duDebugDraw * dd,float const ox,float const oy,float const oz,int const w,int const h,float const size,unsigned int const col,float const lineWidth){
	duDebugDraw * c_arg_dd=(duDebugDraw *)(void*)(dd);
	float const c_arg_ox=ox;
	float const c_arg_oy=oy;
	float const c_arg_oz=oz;
	int const c_arg_w=w;
	int const c_arg_h=h;
	float const c_arg_size=size;
	unsigned int const c_arg_col=col;
	float const c_arg_lineWidth=lineWidth;
	duDebugDrawGridXZ(c_arg_dd,c_arg_ox,c_arg_oy,c_arg_oz,c_arg_w,c_arg_h,c_arg_size,c_arg_col,c_arg_lineWidth);
}

unsigned int nav_duIntToCol(int i,int a){
	int c_arg_i=i;
	int c_arg_a=a;
	unsigned int c_out = duIntToCol(c_arg_i,c_arg_a);
	unsigned int wrap_out  = (c_out);
	return wrap_out;
}

void nav_duIntToCol11(int i,float * col){
	int c_arg_i=i;
	float * c_arg_col=(float *)(void*)(col);
	duIntToCol(c_arg_i,c_arg_col);
}

unsigned int nav_duLerpCol(unsigned int ca,unsigned int cb,unsigned int u){
	unsigned int c_arg_ca=ca;
	unsigned int c_arg_cb=cb;
	unsigned int c_arg_u=u;
	unsigned int c_out = duLerpCol(c_arg_ca,c_arg_cb,c_arg_u);
	unsigned int wrap_out  = (c_out);
	return wrap_out;
}

unsigned int nav_duMultCol(unsigned int const col,unsigned int const d){
	unsigned int const c_arg_col=col;
	unsigned int const c_arg_d=d;
	unsigned int c_out = duMultCol(c_arg_col,c_arg_d);
	unsigned int wrap_out  = (c_out);
	return wrap_out;
}

unsigned int nav_duRGBA(int r,int g,int b,int a){
	int c_arg_r=r;
	int c_arg_g=g;
	int c_arg_b=b;
	int c_arg_a=a;
	unsigned int c_out = duRGBA(c_arg_r,c_arg_g,c_arg_b,c_arg_a);
	unsigned int wrap_out  = (c_out);
	return wrap_out;
}

unsigned int nav_duRGBAf(float fr,float fg,float fb,float fa){
	float c_arg_fr=fr;
	float c_arg_fg=fg;
	float c_arg_fb=fb;
	float c_arg_fa=fa;
	unsigned int c_out = duRGBAf(c_arg_fr,c_arg_fg,c_arg_fb,c_arg_fa);
	unsigned int wrap_out  = (c_out);
	return wrap_out;
}

unsigned int nav_duTransCol(unsigned int c,unsigned int a){
	unsigned int c_arg_c=c;
	unsigned int c_arg_a=a;
	unsigned int c_out = duTransCol(c_arg_c,c_arg_a);
	unsigned int wrap_out  = (c_out);
	return wrap_out;
}

#ifdef __cplusplus
}
#endif
